class Solution {
public:
    int rob(vector<int>& nums) {
if(nums.empty()){
    return 0;
}
int n=nums.size();
if(n==1){
    return nums[0];
}
vector<int> dp(n,0);
vector<int> ds(n,0);
dp[0]=nums[0];
dp[1]=max(nums[0],nums[1]);
for(int i=2;i<n;i++){
    dp[i]=max(dp[i-2]+nums[i],dp[i-1]);
}


ds[1]=nums[1];
for(int j=2;j<n;j++){
    ds[j]=max(ds[j-2]+nums[j],ds[j-1]);
}
if(dp[n-2]>=ds[n-1]){
    return dp[n-2];
}
else return ds[n-1];
    }
};
